#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <assert.h>
#include <stdarg.h>
#include <errno.h>
#include <share.h>

typedef void (*stack_op_t)(void* data);

typedef struct Stack
{
	int MAX;
	int top;
	void* data;
	int size;

}stack_t;

stack_t* stack_create(int size, int max);

int stack_isfull(stack_t* stack);

int stack_isempty(stack_t* stack);

void stack_push(stack_t* stack, void* data);

void* stack_pop(stack_t* stack);

void stack_travel(stack_t* stack, stack_op_t op);

void stack_destroy(stack_t** stack);

void stack_clean(stack_t* stack);

void stack_store(stack_t* stack, char* path);

stack_t* stack_load(char* path);
